#ifndef GEOMETRY_BASE_H
#define GEOMETRY_BASE_H

#include <istream>
#include <cmath>

class Geometry;

#include "coordinate.h"
#include "ray.h"
#include "collision.h"
#include "scene.h"

class Geometry
{
  public:
    Geometry(Scene *scene) : m_scene(scene) {}
    virtual ~Geometry() {}
    virtual void loadAttributes(std::istream &inData) = 0;
    virtual Collision intersect(Ray r) const = 0;
  protected:
    Material *m_material;
    Scene *m_scene;
};
#endif
